package com.zhoukx.netty.doubborpc.netty;

import com.zhoukx.netty.doubborpc.provider.HelloServiceImpl;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;

/**
 *    服务器handler
 *
 */
public class ServerHandler extends ChannelInboundHandlerAdapter {

    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
        // 获取客户端发送的消息,并调用服务
        System.out.println("msg: " + msg);
        // 客户端在调用服务器api时,我们需要定义一个协议
        // 比如: 我们要求每次发新消息都以某个字符串开头  "HelloService#hello"
        if(msg.toString().startsWith("HelloService#hello#")){
            String hello = new HelloServiceImpl().hello(msg.toString().substring(msg.toString().indexOf("#") + 1));
            ctx.writeAndFlush(hello);
        }
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
       ctx.close();
    }
}
